<?php
///**
// * Created by PhpStorm.
// * User: gqn
// * Date: 2016/5/3
// * Time: 14:15
// */
//
//namespace Admin\Controller;
//
//class PingppController extends CommonController{
//
//    const STATUS = 8;//支付完成后的状态
//    public static $api_key = sk_live_u5S4CKajDSKGPWX14G080GmH;
//    public static $app_id;
//
//    public function __construct()
//    {
//        Vendor("Pingpp.init");
////        $configs=C('PINGPP_CONFIG');
////        $pp_mode=C('PING_MODE');//开发模式
////        if(empty($pp_mode)){
////            $pp_mode=0;
////        }
////        if(!empty($configs)){
////            if($pp_mode==0){
////                self::$app_id=$configs["APIID"];
////                self::$api_key=$configs["API_TEST_KEY"];
////            }else{
////                self::$app_id=$configs["APIID"];
////                self::$api_key=$configs["API_LIVE_KEY"];
////            }
////        }
//    }
//
//    public function index(){
//        $pub_key_path = ROOT_PATH.'Uploads/data/pingpp_rsa_public_key.pem';
//        $pub_key_contents = file_get_contents($pub_key_path);
//        $key="MIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQDLCgmN3L5EB2bt0QHgQ69ZyTB+
//A00Y+X+YlHwP8VWrf0EPusbimkN99PRM4WvZxEey344lv7EcEhaxAuDesd+ywL80
//DrR8Jlj4b5nIPeupyF6MS0OnnYvkRCaI2NCBE8X3SP4JDQi9M3zZu/QllFeKxaLt
//QkMVXoaj/KzkD1EBFwIDAQAB";
//        echo base64_encode($pub_key_contents);
//    }
//
//    public function pay_test(){
//        $input_data = json_decode(file_get_contents('php://input'), true);
//        $subject="";
//        if(empty($input_data)){
//            $input_data=$_POST;
//        }
//        if (empty($input_data['channel']) || empty($input_data['amount'])) {
//            echo 'channel or amount is empty';
//            exit();
//        }
//        $channel = strtolower($input_data['channel']);
//        $amount = $input_data['amount'];
//        $orderNo = substr(md5(time()), 0, 12);
//
//// 设置请求签名密钥，密钥对需要你自己用 openssl 工具生成，把公钥填写到 https://dashboard.pingxx.com
//        \Pingpp\Pingpp::setPrivateKeyPath(ROOT_PATH.'Uploads/data/rsa_private_key.pem');
//
//        /**
//         * $extra 在使用某些渠道的时候，需要填入相应的参数，其它渠道则是 array()。
//         * 以下 channel 仅为部分示例，未列出的 channel 请查看文档 https://pingxx.com/document/api#api-c-new
//         */
//        $extra = array();
//        switch ($channel) {
//            case 'alipay_wap':
//                $extra = array(
//                    'success_url' => 'http://example.com/success',
//                    'cancel_url' => 'http://example.com/cancel'
//                );
//                break;
//            case 'bfb_wap':
//                $extra = array(
//                    'result_url' => 'http://example.com/result',
//                    'bfb_login' => true
//                );
//                break;
//            case 'upacp_wap':
//                $extra = array(
//                    'result_url' => 'http://example.com/result'
//                );
//                break;
//            case 'wx_pub':
//                $extra = array(
//                    'open_id' => 'openidxxxxxxxxxxxx'
//                );
//                break;
//            case 'wx_pub_qr':
//                $extra = array(
//                    'product_id' => 'Productid'
//                );
//                break;
//            case 'yeepay_wap':
//                $extra = array(
//                    'product_category' => '1',
//                    'identity_id'=> 'your identity_id',
//                    'identity_type' => 1,
//                    'terminal_type' => 1,
//                    'terminal_id'=>'your terminal_id',
//                    'user_ua'=>'your user_ua',
//                    'result_url'=>'http://example.com/result'
//                );
//                break;
//            case 'jdpay_wap':
//                $extra = array(
//                    'success_url' => 'http://example.com/success',
//                    'fail_url'=> 'http://example.com/fail',
//                    'token' => 'dsafadsfasdfadsjuyhfnhujkijunhaf'
//                );
//                break;
//        }
//
//// 设置 API Key
//        \Pingpp\Pingpp::setApiKey(self::$api_key);
//        try {
//            $ch = \Pingpp\Charge::create(
//                array(
//                    'subject'   => 'Your Subject',
//                    'body'      => 'Your Body',
//                    'amount'    => $amount,
//                    'order_no'  => $orderNo,
//                    'currency'  => 'cny',
//                    'extra'     => $extra,
//                    'channel'   => $channel,
//                    'client_ip' => $_SERVER['REMOTE_ADDR'],
//                    'app'       => array('id' => self::$app_id)
//                )
//            );
//            echo $ch;
//        } catch (\Pingpp\Error\Base $e) {
//            header('Status: ' . $e->getHttpStatus());
//            // 捕获报错信息
//            echo $e->getHttpBody();
//        }
//
//    }
//
//    /**
//     * 支付
//     * post请求
//     * @param channel 支付渠道 alipay；wx；
//     * @param amount 支付金额
//     * @param order_no 订单号
//     * @param order_volume 优惠券
//     */
//    public function pay(){
//        // 此处为 Content-Type 是 application/json 时获取 POST 参数的示例
//        $input_data = json_decode(file_get_contents('php://input'), true);
//        $order_type_name=$order_flag_name = "";
//        $subject = "";
//        $metadata=array();
//        if(empty($input_data)){
//            $input_data=$_POST;
//        }
//        if (empty($input_data['channel']) || empty($input_data['amount'])|| empty($input_data['order_no'])|| empty($input_data['order_flag'])) {
//            $this->ajaxReturn('支付渠道、支付金额、订单号,订单类型都不能为空','JSON');
//        }
//
//
//
//        $subject = $input_data['channel']."订单";
//        $order_flag = $input_data['order_flag'];
//
//        if(!empty($input_data['order_volume'])){
//            $volume_id = $input_data['order_volume'];
//        }else{
//            $volume_id = null;
//        }
//        file_put_contents('/tmp/charge.txt','Payment_volume_id ===='.var_export($volume_id,true) . "\r\n", FILE_APPEND);
//
//        if (!empty($order_flag)) {
//            if($order_flag==1){
//                $order_flag_name = "维修订单 -- ";
//            }else if($order_flag == 2){
//                $order_flag_name = "装修订单 -- ";
//            }else{
//                $order_flag_name = "商城订单 -- ";
//            }
//        }
//
//        if (!empty($input_data['order_type'])) {
//            if($input_data['order_type'] ==1){
//                $order_type_name="即时下单";
//            }elseif($input_data['order_type'] ==2){
//                $order_type_name="预约下单";
//            }elseif($input_data['order_type'] ==3){
//                $order_type_name="取消订单";
//                if(!empty($input_data['order_cancel_reason'])){
//                    $order_cancel_reason = $input_data['order_cancel_reason'];
//                }
//                if(!empty($input_data['order_cancel_content'])) {
//                    $order_cancel_content = $input_data['order_cancel_content'];
//                }
//            }elseif($input_data['order_type'] ==4){
//                //发票支付使用
//                if(empty($input_data['user_id']) || empty($input_data['tax']) || empty($input_data['money']) || empty($input_data['name']) || empty($input_data['content']) || empty($input_data['id'])  || empty($input_data['contacts_name']) || empty($input_data['contacts_phone']) ||  empty($input_data['method'])){
//                    $this->ajaxReturn('所有选项都不能为空','JSON');
//                }else{
//                    if($input_data['method']==1 && (empty($input_data['address']) || empty($input_data['region']))){
//                        $this->ajaxReturn('地址不能为空','JSON');
//                    }elseif($input_data['method']==2 && empty($input_data['email'])){
//                        $this->ajaxReturn('邮箱不能为空','JSON');
//                    }
//                }
//
//            }
//        }
//
//        $channel = strtolower($input_data['channel']);
//        $amount = $input_data['amount'];
//        $orderNo = $input_data['order_no'];
//
//        if($order_flag_name !="" || $order_type_name !=""){
//            $subject = $order_flag_name.$order_type_name;
//        }
//
//        // 设置请求签名密钥，密钥对需要你自己用 openssl 工具生成，把公钥填写到 https://dashboard.pingxx.com
//        \Pingpp\Pingpp::setPrivateKeyPath(ROOT_PATH.'Uploads/data/rsa_private_key.pem');
//        // 也可以设置私钥内容
//        // \PingppSDK\PingppSDK::setPrivateKey(file_get_contents(__DIR__ . '/your_rsa_private_key.pem'));
//
//        /**
//         * $extra 在使用某些渠道的时候，需要填入相应的参数，其它渠道则是 array()。
//         * 以下 channel 仅为部分示例，未列出的 channel 请查看文档 https://pingxx.com/document/api#api-c-new
//         */
//        $extra = array();
//        switch ($channel) {
//            case 'alipay_wap':
//                $extra = array(
//                    'success_url' => 'http://example.com/success',
//                    'cancel_url' => 'http://example.com/cancel'
//                );
//                break;
//            case 'bfb_wap':
//                $extra = array(
//                    'result_url' => 'http://example.com/result',
//                    'bfb_login' => true
//                );
//                break;
//            case 'upacp_wap':
//                $extra = array(
//                    'result_url' => 'http://example.com/result'
//                );
//                break;
//            case 'wx_pub':
//                $extra = array(
//                    'open_id' => 'openidxxxxxxxxxxxx'
//                );
//                break;
//            case 'wx_pub_qr':
//                $extra = array(
//                    'product_id' => 'Productid'
//                );
//                break;
//            case 'yeepay_wap':
//                $extra = array(
//                    'product_category' => '1',
//                    'identity_id'=> 'your identity_id',
//                    'identity_type' => 1,
//                    'terminal_type' => 1,
//                    'terminal_id'=>'your terminal_id',
//                    'user_ua'=>'your user_ua',
//                    'result_url'=>'http://example.com/result'
//                );
//                break;
//            case 'jdpay_wap':
//                $extra = array(
//                    'success_url' => 'http://example.com/success',
//                    'fail_url'=> 'http://example.com/fail',
//                    'token' => 'dsafadsfasdfadsjuyhfnhujkijunhaf'
//                );
//                break;
//        }
//        $payData = array();
//        // 设置 API Key
//        \Pingpp\Pingpp::setApiKey(self::$api_key);
//
//        try {
//            if($input_data['order_type']==1 || $input_data['order_type']==2) {
//                $charge_arr = array(
//                    'order_no' => $orderNo,
//                    'amount' => $amount,
//                    'app' => array('id' => self::$app_id),
//                    'channel' => $channel,
//                    'currency' => 'cny',
//                    'client_ip' => $_SERVER['REMOTE_ADDR'],
//                    'subject' => $subject,
//                    'body' => $subject,
//                    'extra' => $extra,
//                    'metadata' => array("order_flag" => $order_flag, "order_volume" => $volume_id),
//                );
//                $ch = \Pingpp\Charge::create(
//                    $charge_arr
//                );
//                //$data=json_decode($ch,true);
//                $user_id = 0;
//                $orders = $this->checkOrderFlag($order_flag, $orderNo);
//
//                if (!empty($orders)) {
//                    $user_id = $orders["user_id"];
//                }
//                $data = $ch;
//                $pay_extra = serialize($extra);
//                $payData = $charge_arr;
//                unset($payData["extra"]);
//                unset($payData["currency"]);
//                unset($payData["app"]);
//                unset($payData["metadata"]);
//                $payData["extra"] = $pay_extra;
//                $payData["order_type"] = $order_flag;
//                $payData["addtime"] = time();
//                $payData["total"] = $amount;
//                $payData["user_id"] = $user_id;
//
//                $isExists = M("UserPayRecord")->where(array("order_no" => $orderNo, "event" => 1))->find();
//                if (empty($isExists)) {
//                    $result = M("UserPayRecord")->add($payData);
//                    \Think\Log::record("pay-result:" . $result . " UserPayRecord===" . var_export($payData, true));
//                } else {
//                    \Think\Log::record("pay-result-exists UserPayRecord===" . var_export($isExists, true));
//                }
//            }elseif($input_data['order_type']==3){
//                $charge_arr = array(
//                    'order_no' => $orderNo,
//                    'amount' => $amount,
//                    'app' => array('id' => self::$app_id),
//                    'channel' => $channel,
//                    'currency' => 'cny',
//                    'client_ip' => $_SERVER['REMOTE_ADDR'],
//                    'subject' => $subject,
//                    'body' => $subject,
//                    'extra' => $extra,
//                    'metadata' => array("order_flag" => $order_flag, "order_type"=>'3', "order_cancel_reason" => $order_cancel_reason,"order_cancel_content"=>$order_cancel_content),
//                );
//                $ch = \Pingpp\Charge::create(
//                    $charge_arr
//                );
////                $data=json_decode($ch,true);
//                $user_id = 0;
//                $orders = $this->checkOrderFlag($order_flag, $orderNo);
//                if (!empty($orders)) {
//                    $user_id = $orders["user_id"];
//                }
//                $data = $ch;
//                $pay_extra = serialize($extra);
//
//                $payCancelData['user_id'] = $user_id;
//                $payCancelData['subject'] = $charge_arr['subject'];
//                $payCancelData['diagnose_price'] = $charge_arr['amount'];
//                $payCancelData['amount'] = $charge_arr['amount'];
//                $payCancelData['order_no'] = $orderNo;
//                $payCancelData['extra'] = $pay_extra;
//                $payCancelData['channel'] = $channel;
//                $payCancelData['client_ip'] = $_SERVER['REMOTE_ADDR'];
//                $payCancelData['order_type'] = $order_flag;
//                $payCancelData['addtime'] = time();
//
//                $isExists = M('UserPayCancelRecord')->where("order_no = $orderNo")->find();
//                if(empty($isExists)){
//                    $return = M('UserPayCancelRecord')->add($payCancelData);
//                    file_put_contents('/tmp/charge.txt','Order_Cancel_ADD_RECORD'.var_export($return,true) . "\r\n", FILE_APPEND);
//                }else{
//                    file_put_contents('/tmp/charge.txt','Order_Cancel_Pay ==== '.var_export($isExists,true) . "\r\n", FILE_APPEND);
//                }
//            }elseif($input_data['order_type']==4){
//                $metadata['name']=$input_data['name'];    //发票抬头
//                $metadata['content']=$input_data['content'];    //发票内容
//                $metadata['contacts_name']=$input_data['contacts_name'];   //联系人姓名
//                $metadata['contacts_phone']=$input_data['contacts_phone'];   //联系人电话
//                $metadata['money']=$input_data['money'];        //发票金额
//                $metadata['tax']=$input_data['tax'];            //税费
//                $metadata['order_id']=$input_data['id'];        //订单id
//                $metadata['user_id']=$input_data['user_id'];     //用户id
//                $metadata['region']=$input_data['region'];      //地区
//                $metadata['method']=$input_data['method'];      //方式
//                $metadata['amount']=$input_data['amount'];      //支付金额
//                $metadata['channel']=$input_data['channel'];      //支付渠道
//                $metadata['address']=empty($input_data['address'])?'':$input_data['address'];   //邮寄地址
//                $metadata['email']=empty($input_data['email'])?'':$input_data['email'];          //电子邮箱
//                $in_id=M('invoice')->add($metadata);
//                $rewher['repair_order_num_alias']=array('in',$input_data['id']);
//                $saea['is_mail']=1;
//                M('repair_order')->where($rewher)->save($saea);
//                $charge_arr = array(
//                    'order_no' => $orderNo,
//                    'amount' => $amount,
//                    'app' => array('id' => self::$app_id),
//                    'channel' => $channel,
//                    'currency' => 'cny',
//                    'client_ip' => $_SERVER['REMOTE_ADDR'],
//                    'subject' => $subject,
//                    'body' => $subject,
//                    'extra' => $extra,
//                    'metadata' => array('id'=>$in_id));
//                $ch = \Pingpp\Charge::create(
//                    $charge_arr
//                );
////                $data=json_decode($ch,true);
//                $user_id = 0;
//                $orders = $this->checkOrderFlag($order_flag, $orderNo);
//                if (!empty($orders)) {
//                    $user_id = $orders["user_id"];
//                }
//                $data = $ch;
//
//
//            }
//            $this->ajaxReturn($data,'JSON');
//
//        } catch (\Pingpp\Error\Base $e) {
//            header('Status: ' . $e->getHttpStatus());
//            $data["code"]=1017;
//            $data["msg"]=$e->getHttpStatus();
//            $data['error'] = $e->getHttpBody();
//            // 捕获报错信息
//            $this->ajaxReturn($data,'JSON');
//        }
//    }
//
//    /**
//     * 退款
//     * @param charge_id 支付的Charge对象id
//     * @param amount 退款金额
//     * @param description 退款详情
//     */
//    public function refund($charge_id,$amount,$description){
//        \Pingpp\Pingpp::setPrivateKeyPath(ROOT_PATH.'Uploads/data/rsa_private_key.pem');
//        $input_data = json_decode(file_get_contents('php://input'), true);
////        if(empty($input_data)){
////            $input_data=$_POST;
////        }
////        if (empty($input_data['charge_id']) || empty($input_data['amount'])) {
////            $this->ajaxReturn('charge_id or amount is empty','JSON');
////        }
//        \Pingpp\Pingpp::setApiKey(self::$api_key);
//        $ch = \Pingpp\Charge::retrieve($charge_id);
//        $re = $ch->refunds->create(
//            array(
//                'amount' => $amount,
//                'description' => $description
//            )
//        );
//        $data=json_decode($re,true);
//        return $data;
////        $this->ajaxReturn($data,'JSON');
//    }
//
//    /**
//     * 转账
//     */
//    public function transfer(){
//        \Pingpp\Pingpp::setApiKey(self::$api_key);
//        try {
//            $tr = \Pingpp\Transfer::create(
//                array(
//                    'amount'    => 100,
//                    'order_no'  => date('YmdHis') . (microtime(true) % 1) * 1000 . mt_rand(0, 9999),
//                    'currency'  => 'cny',
//                    'channel'   => 'wx_pub',
//                    'app'       => array('id' => self::$api_id),
//                    'type'      => 'b2c',
//                    'recipient' => 'o9zpMs9jIaLynQY9N6yxcZ',
//                    'description' => 'testing',
//                    'extra' => array('user_name' => 'User Name', 'force_check' => false)
//                )
//            );
//            $data=json_decode($tr,true);
//            $this->ajaxReturn($data,'JSON');
//        } catch (\Pingpp\Error\Base $e) {
//            header('Status: ' . $e->getHttpStatus());
//            $data=($e->getHttpBody());
//            $this->ajaxReturn($data,'JSON');
//        }
//    }
//
//    /**
//     * 通知
//     */
//    public function webhooks(){
//        $data=$metadata=array();
//        $code=0;
//        $raw_data = file_get_contents('php://input');
//        if(empty($raw_data)){
//            $raw_data=$_POST;
//        }
//        \Think\Log::record("Pingpp webhooks raw_data===".$raw_data);
//        file_put_contents('/tmp/charge.txt',"Pingpp webhooks Raw_data=======".var_export($raw_data,true) ."\r\n", FILE_APPEND);
//
//        // 示例
//        // $raw_data = '{"id":"evt_eYa58Wd44Glerl8AgfYfd1sL","created":1434368075,"livemode":true,"type":"charge.succeeded",
//        //"data":{"object":{"id":"ch_bq9IHKnn6GnLzsS0swOujr4x","object":"charge","created":1434368069,"livemode":true,"paid":true,"refunded":false,
//        //                  "app":"app_vcPcqDeS88ixrPlu","channel":"wx","order_no":"2015d019f7cf6c0d","client_ip":"140.227.22.72","amount":100,
//        //                  "amount_settle":0,"currency":"cny","subject":"An Apple","body":"A Big Red Apple","extra":{},"time_paid":1434368074,
//        //                  "time_expire":1434455469,"time_settle":null,"transaction_no":"1014400031201506150354653857",
//        //      "refunds":{"object":"list","url":"/v1/charges/ch_bq9IHKnn6GnLzsS0swOujr4x/refunds","has_more":false,"data":[]},"amount_refunded":0,
//        //                  "failure_code":null,"failure_msg":null,"metadata":{},"credential":{},"description":null}},
//        //                  "object":"event","pending_webhooks":0,"request":"iar_Xc2SGjrbdmT0eeKWeCsvLhbL"}';
//
//        $headers = \Pingpp\Util\Util::getRequestHeaders();
//        // 签名在头部信息的 x-pingplusplus-signature 字段
//        $signature = isset($headers['X-Pingplusplus-Signature']) ? $headers['X-Pingplusplus-Signature'] : NULL;
//        // 示例
//        // $signature = 'BX5sToHUzPSJvAfXqhtJicsuPjt3yvq804PguzLnMruCSvZ4C7xYS4trdg1blJPh26eeK/P2QfCCHpWKedsRS3bPKkjAvugnMKs+3Zs1k+PshAiZsET4sWPGNnf1E89Kh7/2XMa1mgbXtHt7zPNC4kamTqUL/QmEVI8LJNq7C9P3LR03kK2szJDhPzkWPgRyY2YpD2eq1aCJm0bkX9mBWTZdSYFhKt3vuM1Qjp5PWXk0tN5h9dNFqpisihK7XboB81poER2SmnZ8PIslzWu2iULM7VWxmEDA70JKBJFweqLCFBHRszA8Nt3AXF0z5qe61oH1oSUmtPwNhdQQ2G5X3g==';
//
//        // 请从 https://dashboard.pingxx.com 获取「Ping++ 公钥」
//        //\Think\Log::record("signature:".$signature);
//        $pub_key_path = ROOT_PATH.'Uploads/data/pingpp_rsa_public_key.pem';
//        //\Think\Log::record("pub_key_path:".$pub_key_path);
//        $result = $this->verify_signature($raw_data, $signature, $pub_key_path);
//        \Think\Log::record("Pingpp webhooks verify_signature result===".$result);
//
//        if ($result === 1) {
//
//            // 验证通过
//        } elseif ($result === 0) {
//            $code=http_response_code(400);
//            $data["code"]=$code;
//            $data["msg"]='verification failed';
//            $this->ajaxReturn($data,'JSON');
//        } else {
//            $code=http_response_code(400);
//            $data["code"]=$code;
//            $data["msg"]='verification error';
//            $this->ajaxReturn($data,'JSON');
//        }
//
//        $event = json_decode($raw_data, true);
//        file_put_contents('/tmp/charge.txt',"Pingpp[webhooks] event===".var_export($event,true) . "\r\n", FILE_APPEND);
//        $charge = $event['data']['object']['metadata'];
//        $ordeType = $charge['order_type'];
//
//            if($event['type'] == 'refund.succeeded') {
//            $order_id = $event['data']['object']['charge_order_no'];
//            $description = $event['data']['object']['description'];
//            file_put_contents('/tmp/charge.txt','RepairOrderRefund================='.var_export($event,true) . "\r\n", FILE_APPEND);
//            //更新支付状态
//            $maps['order_no'] = $order_id;
//            $Update['event'] = 2;
//            $refundOrder = M('user_pay_record')->where($maps)->save($Update);
//            file_put_contents('/tmp/charge.txt','RepairOrderRefund=====UpdatePay============'.var_export($refundOrder,true) . "\r\n", FILE_APPEND);
//            //更新申请状态
//            $wheOrder['repair_order_num_alias'] = $order_id;
//            $RepairOrder = M('repair_order')->field('repair_order_id')->where($wheOrder)->find();
//            file_put_contents('/tmp/charge.txt','RepairOrderRefund======UpdateApply==========='.var_export($RepairOrder,true) . "\r\n", FILE_APPEND);
//
//            if($RepairOrder){
//                $where['order_id'] = $RepairOrder['repair_order_id'];
//                $set['feedback'] = $description;
//                $set['status'] = 1;
//                M('repair_order_refund')->where($where)->save($set);
//                $updateOrder['status'] = 15;
//                M('repair_order')->where($wheOrder)->save($updateOrder);
//            }else{
//                $array = array('err_code'=>404,'err_msg'=>'订单不存在');
//                file_put_contents('/tmp/charge.txt','RepairOrderNotExist================='.var_export($array,true) . "\r\n", FILE_APPEND);
//            }
//            // ...
//            $code= http_response_code(200); // PHP 5.4 or greater
//        } elseif($event['type'] == 'charge.succeeded' && $ordeType == '4'){
//            //发票支付
//            $CancelResult = $this->invoiceSuccess($event['data']['object']['metadata']);
//            if(!$CancelResult){
//
//                file_put_contents('/tmp/charge.txt','UpdatePayInvoice======'.date('Y-m-d H:i:s',time()).var_export($CancelResult)."\r\n", FILE_APPEND);
//            }
//            file_put_contents('/tmp/charge.txt','Pingpp webhooks charge.succeeded: result==='.var_export($result,true) . "\r\n", FILE_APPEND);
//
//            if($result["code"]!=200){
//                $this->ajaxReturn($result,'JSON');
//            }
//            $code=http_response_code(200); // PHP 5.4 or greater
//
//        }else {
//            /**
//             * 其它类型 ...
//             * - summary.daily.available
//             * - summary.weekly.available
//             * - summary.monthly.available
//             * - transfer.succeeded
//             * - red_envelope.sent
//             * - red_envelope.received
//             * ...
//             */
//            //$code=http_response_code(200);
//            $code=http_response_code(400);
//            // 异常时返回非 2xx 的返回码
//            // http_response_code(400);
//        }
//        //$data["code"]=$code;
//        // $data["msg"]='ok';
//        //$this->ajaxReturn($data,'JSON');
//        echo $code;
//    }
//
//    // 验证 webhooks 签名方法
//    private function verify_signature($raw_data, $signature, $pub_key_path) {
//        $pub_key_contents = file_get_contents($pub_key_path);
//        // php 5.4.8 以上，第四个参数可用常量 OPENSSL_ALGO_SHA256
//        //\Think\Log::record("base64_decode_signature:".base64_decode($signature));
//        //\Think\Log::record("pub_key_contents:".$pub_key_contents);
//        return openssl_verify($raw_data, base64_decode($signature), $pub_key_contents, 'sha256');
//    }
//
//
//
//
//
//
//    /**
//     * 推送消息
//     * @param $money
//     * @param $user_id
//     */
//    private function pushPayInfo($money,$user_id){
//        $userData=$this->checkUserIsExist($user_id);
//        if(!isset($userData["code"])){
//            $users=$userData["users"];
//            //$jpushObj = new \Org\Util\JPush_test();
//            $receive = $users["push_name"];//别名
//            if(!empty($receive)&&!empty($money)){
//                $content = '您已经成功向师傅付款￥'.$money."元";
//                $m_type = 'tb';
//                $m_txt = "";
//                $m_time = '600';        //离线保留时间
//                jpushStr($receive,$content);
//                //$res = $jpushObj->jpush($receive, $content, $m_type, $m_txt, $m_time);
//            }
//        }
//    }
//
//
//
//    /**
//     * 客服同意退款
//     * @order_id 对外订单id
//     * @amount  总金额
//     * @description 理由
//     */
//
//    public function AgreeRefund(){
//        $order_id = I('post.order_id');
//        $description = I('post.description');
//        $OrderExist = M('repair_order')->field('repair_order_num_alias')->where("repair_order_id = $order_id")->find();
//        if(!$OrderExist){
//            echo 3; //该订单不存在
//            exit;
//        }
//        $UserPay = M('user_pay_record')->field('ping_id,channel,event')->where("order_no = $OrderExist[repair_order_num_alias] and status = 1")->find();
//        if(!$UserPay){
//            echo 2; //该订单未支付
//            exit;
//        }
//        if($UserPay[event]==2){
//            echo 4; //已退款
//            exit;
//        }
//        $UserRefund = M('repair_order_refund')->field('money')->where("order_id = $order_id")->find();
//        $amount = $UserRefund['money']*100;
//        $charge_id = $UserPay['ping_id'];
//        if($UserPay['channel']=='wx'){
//            $refund = $this->refund($charge_id,$amount,$description);
//            console.log(1);
//            console.log("\r\n");
//            console.log($refund);
//
//            if($refund['status']=="pending"){
//                echo 1;
//                exit;
//            }
////            $refundSucc = M('repair_order_refund')->where("order_id = $order_id and status = 1")->find();
//        }elseif($UserPay['channel']=='alipay'){
//            $result = $this->refund($charge_id,$amount,$description);
//            echo $result;
//            exit;
//        }
//
//    }
//
//}